 /*
 * SessionBean1.java
 *
 * Created on 10/04/2014, 01:42:48 PM
 * Copyright RVGRFD85
 */
package visit;

import com.sun.rave.web.ui.appbase.AbstractSessionBean;
import java.security.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.faces.FacesException;
import listas.listaOficios;
import listas.parametros;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import pojos.CatAsuntos;
import pojos.CatInstancias;
import pojos.Oficios;
import pojos.ProInfractores;
import pojos.ProQuejosos;
import pojos.Procedimientos;
import pojos.Remitentes;
import pojos.Resoluciones;
import pojos.Turnados;
import pojos.Usuarios;

import javax.persistence.EntityManager;
import listas.listaInvestigacion;
import listas.listaProcedimientos;
import listas.listaTurnados;
import pojos.CatLugares;
import pojos.CatVisitadores;
import pojos.InvInfractores;
import pojos.InvQuejosos;
import pojos.Investigacion;

/**
 * <p>Session scope data bean for your application.  Create properties
 *  here to represent cached data that should be made available across
 *  multiple HTTP requests for an individual user.</p>
 *
 * <p>An instance of this class will be created for you automatically,
 * the first time your application evaluates a value binding expression
 * or method binding expression that references a managed bean using
 * this class.</p>
 */
public class SessionBean1 extends AbstractSessionBean {
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    private int __placeholder;
    void deleteRemitentes(Oficios unOficio) {
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="delete from Remitentes where oficios.idOficio = " + unOficio.getId();
        try{
            transaccion=sesion.beginTransaction();
            //Query consulta=sesion.createQuery(sentenciaSql);
            //catalogo=consulta.list();
            transaccion.commit();
        }catch(Exception ex){
            transaccion.rollback();
        }finally{
            return ;
        }
    }

    

    void deleteTurnados(Oficios unOficio) {
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="delete from Turnados where oficios.idOficio = " + unOficio.getId();
        try{
            transaccion=sesion.beginTransaction();
            //Query consulta=sesion.createQuery(sentenciaSql);
            //catalogo=consulta.list();
            transaccion.commit();
        }catch(Exception ex){
            transaccion.rollback();
        }finally{
            return ;
        }
    }
    boolean deleteTurnados(int response) {
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="delete from Turnados where oficios.idOficio = " + response;
        try{
            transaccion=sesion.beginTransaction();
            transaccion.commit();
        }catch(Exception ex){
            return false;
        }finally{
            return true ;
        }
    }
    boolean deleteTurnadosId(int id) {
        this.crearSesion();
        try{
            Transaction transaccion=null;
            Turnados unt= new Turnados();
            ss=HibernateUtil.getSessionFactory().openSession();
            ss.load(unt,id);
            unt.setDeleted(true);
            ss.clear();
            ss.close();
   
            transaccion=this.sesion.beginTransaction();
            this.sesion.merge(unt);
            transaccion.commit();
        }catch(Exception ex){
            return false;
        }finally{
            return true ;
        }
    }
    boolean deleteGeneral(int id, String param) {
        if(param.equalsIgnoreCase("quejoso")){
            this.crearSesion();
            try{
                Transaction transaccion=null;
                ProQuejosos unt= new ProQuejosos();
                ss=HibernateUtil.getSessionFactory().openSession();
                ss.load(unt,id);
                unt.setDeleted(true);
                ss.clear();
                ss.close();
                transaccion=this.sesion.beginTransaction();
                this.sesion.merge(unt);
                transaccion.commit();
            }catch(Exception ex){
                return false;
            }finally{
                return true ;
            }
        }else{
            this.crearSesion();
            try{
                Transaction transaccion=null;
                ProInfractores unt= new ProInfractores();
                ss=HibernateUtil.getSessionFactory().openSession();
                ss.load(unt,id);
                unt.setDeleted(true);
                ss.clear();
                ss.close();
                transaccion=this.sesion.beginTransaction();
                this.sesion.merge(unt);
                transaccion.commit();
            }catch(Exception ex){
                return false;
            }finally{
                return true ;
            }
        }
    }
    List<CatAsuntos> getCatalogoDeAsuntos() {
        List <CatAsuntos> catalogo=new ArrayList<CatAsuntos>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="FROM CatAsuntos a where a.deleted=0 ORDER BY a.asunto";
        try{
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery(sentenciaSql);
            catalogo=consulta.list();
            transaccion.commit();
        }catch(Exception ex){
            transaccion.rollback();
        }finally{
            return catalogo;
        }
    }
    List<CatInstancias> getCatalogoDeInstancias() {
        List <CatInstancias> catalogo=new ArrayList<CatInstancias>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="FROM CatInstancias a where a.deleted=0 ORDER BY a.descripcion";
        try{
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery(sentenciaSql);
            catalogo=consulta.list();
            transaccion.commit();
        }catch(Exception ex){
            transaccion.rollback();
        }finally{
            return catalogo;
        }
    }


    List<Oficios> llenaOficiosEntradaFiltro() {
        String queryString = "SELECT a FROM Autor a WHERE :apellidos IS NULL OR LOWER(a.apellidos) = :apellidos";
//        Query query = gete.createQuery(queryString);
//        query.setParameter("apellidos", StringUtils.lowerCase(apellidos));
//        return query.getResultList();
        return null;
    }

    List<listaTurnados> llenarListaTurnadosFiltro(String paramSeacrh, String donde, parametros param) {
        List <listaTurnados> catalogo=new ArrayList<listaTurnados>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="";
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            if(donde.equalsIgnoreCase("t")){
                sentenciaSql="SELECT NEW listas.listaTurnados (t) FROM Turnados t" +
                    " where 1=1 and t.deleted=0 and " +
                    " ( CONCAT(t.paterno,' ',t.materno,' ',t.nombre) like '%"+paramSeacrh+"%' or  CONCAT(t.nombre,' ', t.paterno, ' ',t.materno) like '%"+paramSeacrh+"%')";
            }
            if(donde.equalsIgnoreCase("no")){
                sentenciaSql="SELECT NEW listas.listaTurnados (t) from Turnados t " +
                        " where 1=1 and t.deleted=0 and t.oficios.oficio like '%"+paramSeacrh+"%'";
            }
            if(donde.equalsIgnoreCase("ot")){
                sentenciaSql="SELECT NEW listas.listaTurnados (t) FROM Turnados t" +
                    " where 1=1 and t.deleted=0 and t.oficio like '%"+paramSeacrh+"%'" ;
            }

            if(param.getFecha()!=null){
                Date uno=param.getFecha();
                Calendar cal = new GregorianCalendar();
                cal.setTimeInMillis(uno.getTime());
                cal.add(Calendar.DATE, +1);
                //param.setFecha(cal.getTime());
                sentenciaSql+=" and t.oficios.fechaRec = '"+ new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+ "'";
            }

            sentenciaSql+=" order by t.oficios.id desc";

            Query consulta=sesion.createQuery(sentenciaSql);
           
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
           // this.VentanaAlert
            this.mostrarMensajeAlert("error al consultar", ex.toString()+sentenciaSql );
        }finally{//
            return catalogo;
        }
    }

//List<listaTurnados> llenarListaTurnadosFiltro(parametros param) {
//        List <listaTurnados> catalogo=new ArrayList<listaTurnados>();
//        this.crearSesion();
//        Transaction transaccion=null;
//        String sentenciaSql="";
//        try{
//            catalogo.clear();
//            transaccion=sesion.beginTransaction();
//
//            if(param.getFecha()!=null){
//                Date uno=param.getFecha();
//                Calendar cal = new GregorianCalendar();
//                cal.setTimeInMillis(uno.getTime());
//                cal.add(Calendar.DATE, +1);
//                //param.setFecha(cal.getTime());
//                sentenciaSql+="SELECT NEW listas.listaTurnados (t) FROM Turnados t" +
//                    " where 1=1 and t.deleted=0 and t.oficios.fechaRec = '"+ new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+ "'";
//            }
//            sentenciaSql+=" order by t.id desc";
//
//
//            Query consulta=sesion.createQuery(sentenciaSql);
//
//            catalogo=consulta.list();
//            sesion.flush();
//        }catch(HibernateException ex){
//            transaccion.rollback();
//           // this.VentanaAlert
//            this.mostrarMensajeAlert("error al consultar", ex.toString()+sentenciaSql );
//        }finally{//
//            return catalogo;
//        }
//    }


    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    // </editor-fold>
    /**
     * <p>Construct a new session data bean instance.</p>
     */
    public SessionBean1() {
    }
    /**
     * <p>This method is called when this bean is initially added to
     * session scope.  Typically, this occurs as a result of evaluating
     * a value binding or method binding expression, which utilizes the
     * managed bean facility to instantiate this bean and store it into
     * session scope.</p>
     * 
     * <p>You may customize this method to initialize and cache data values
     * or resources that are required for the lifetime of a particular
     * user session.</p>
     */
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here
        
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("SessionBean1 Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
    }

    /**
     * <p>This method is called when the session containing it is about to be
     * passivated.  Typically, this occurs in a distributed servlet container
     * when the session is about to be transferred to a different
     * container instance, after which the <code>activate()</code> method
     * will be called to indicate that the transfer is complete.</p>
     * 
     * <p>You may customize this method to release references to session data
     * or resources that can not be serialized with the session itself.</p>
     */
    public void passivate() {
    }

    /**
     * <p>This method is called when the session containing it was
     * reactivated.</p>
     * 
     * <p>You may customize this method to reacquire references to session
     * data or resources that could not be serialized with the
     * session itself.</p>
     */
    public void activate() {
    }

    /**
     * <p>This method is called when this bean is removed from
     * session scope.  Typically, this occurs as a result of
     * the session timing out or being terminated by the application.</p>
     * 
     * <p>You may customize this method to clean up resources allocated
     * during the execution of the <code>init()</code> method, or
     * at any later time during the lifetime of the application.</p>
     */
    public void destroy() {
    }
    public Session sesion=null;
    private boolean enLinea=false;
    private Usuarios usuarioGlobal;
    public Usuarios getUsuarioGlobal() {
        return usuarioGlobal;
    }
    public void setUsuarioGlobal(Usuarios usuarioGlobal) {
        this.usuarioGlobal = usuarioGlobal;
    }
    public Session getSesion() {
        return sesion;
    }
    public void setSesion(Session sesion) {
        this.sesion = sesion;
    }
    public boolean isEnLinea() {
        return enLinea;
    }
    public void setEnLinea(boolean enLinea) {
        this.enLinea = enLinea;
    }
    public void crearSesion(){
        if(sesion==null || !sesion.isOpen()){
            try{
                sesion=HibernateUtil.getSessionFactory().openSession();
            }catch(HibernateException ex){
                //this.mostrarMensaje(1);
            }
        }
    }
    /*METODO QUE FINALIZA LA SESION DE TRABAJO*/
    public void cerrarSesion(){
        this.setUsuarioGlobal(null);
        try{
            if(sesion!=null && sesion.isOpen()){
                sesion.flush();
                sesion.close();
                //sesion.disconnect();
            }
        }catch(HibernateException ex){
            sesion=null;
        //    this.mostrarMensaje("","");
        }
        this.setEnLinea(false);
    }
    private String tituloAlert;
    private String msgAlert;
    private boolean VentanaAlert;
    private boolean VentanaError;

    public boolean isVentanaAlert() {
        return VentanaAlert;
    }
    public void setVentanaAlert(boolean VentanaAlert) {
        this.VentanaAlert = VentanaAlert;
    }
    public boolean isVentanaError() {
        return VentanaError;
    }
    public void setVentanaError(boolean VentanaError) {
        this.VentanaError = VentanaError;
    }
    public String getMsgAlert() {
        return msgAlert;
    }
    public void setMsgAlert(String msgAlert) {
        this.msgAlert = msgAlert;
    }
    public String getTituloAlert() {
        return tituloAlert;
    }
    public void setTituloAlert(String tituloAlert) {
        this.tituloAlert = tituloAlert;
    }
   public  void mostrarMensajeAlert(String titulo, String msg) {
        this.setTituloAlert(titulo);
        this.setMsgAlert(msg);
        this.setVentanaAlert(true);
    }
    void mostrarMensajeError(String titulo, String msg) {
        this.setTituloAlert(titulo);
        this.setMsgAlert(msg);
        this.setVentanaError(true);
    }
    Usuarios login(String alias, String contrasena) {
        this.crearSesion();
        Transaction transaccion=null;
        this.setUsuarioGlobal(null);
        try{
            transaccion=sesion.beginTransaction();
            //String passCrypted=this.getHash(contrasena);
            
            Query consulta=sesion.createQuery("FROM Usuarios where usuario=? AND contrasena=? and deleted=0");
            consulta.setString(0, alias);
            consulta.setString(1, contrasena);
            if(consulta.list().size()>0){
                this.setUsuarioGlobal( (Usuarios) consulta.uniqueResult());
            //    this.setLabelGlobalDataUser("Usuario: "+usuarioGlobal.getNombre()+ " "+ usuarioGlobal.getPaterno());
            }else{
                this.cerrarSesion();
            }
            transaccion.commit();
            transaccion.commit();
            sesion.flush();
            sesion.close();
            //sesion.disconnect();
        }catch(HibernateException ex){
            transaccion.rollback();
            this.cerrarSesion();
            //this.mostrarMensaje("","");
        }finally{
            return this.usuarioGlobal;
        }
    }
    private Session ss;
    int addOficio(Oficios unOficio, int asuntoInt, int instanciaInt) {
        int response=0;
        this.crearSesion();
        ss=HibernateUtil.getSessionFactory().openSession();
        CatAsuntos unaAsunto= new CatAsuntos();
        ss.load(unaAsunto, new Integer(asuntoInt));
        unOficio.setCatAsuntos(unaAsunto);


        DateFormat df1;
        df1 = DateFormat.getDateInstance(DateFormat.MEDIUM);
        Date now = new Date();
        unOficio.setFechaCap(now);

        
        CatInstancias unaInst= new CatInstancias();
        ss.load(unaInst, new Integer(instanciaInt));
        unOficio.setCatInstancias(unaInst);
        ss.clear();
        ss.close();
        unOficio.setId(0);
        unOficio.setDeleted(false);
        unOficio.setUsuarios(this.getUsuarioGlobal());

        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(unOficio);
            transaccion.commit();
            response=unOficio.getId();
        }catch(HibernateException e){
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
            e.printStackTrace();
            response=-1;
            throw new RuntimeException(e);
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return response;
        }
    }
    int addOficioEdit(Oficios unOficio, int asuntoInt, int instanciaInt) {
        int response=0;
        this.crearSesion();
        ss=HibernateUtil.getSessionFactory().openSession();
        CatAsuntos unaAsunto= new CatAsuntos();
        ss.load(unaAsunto, new Integer(asuntoInt));
        unOficio.setCatAsuntos(unaAsunto);


        DateFormat df1;
        df1 = DateFormat.getDateInstance(DateFormat.MEDIUM);
        Date now = new Date();
        unOficio.setFechaCap(now);


        CatInstancias unaInst= new CatInstancias();
        ss.load(unaInst, new Integer(instanciaInt));
        unOficio.setCatInstancias(unaInst);
        ss.clear();
        ss.close();
        //unOficio.setId(0);
        unOficio.setDeleted(false);
        unOficio.setUsuarios(this.getUsuarioGlobal());

        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(unOficio);
            transaccion.commit();
            response=unOficio.getId();
        }catch(HibernateException e){
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
            e.printStackTrace();
            response=-1;
            throw new RuntimeException(e);
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return response;
        }
    }
    Turnados addTurnado(Turnados turnado) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            turnado.setId(0);
            turnado.setDeleted(false);
            this.sesion.saveOrUpdate(turnado);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return turnado;
        }
    }
    Turnados addTurnadoEdit(Turnados turnado) {
         this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            //turnado.setId(0);
            turnado.setDeleted(false);
            this.sesion.saveOrUpdate(turnado);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return turnado;
        }
    }
    Remitentes addRemitente(Remitentes remitente) {
         this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            remitente.setId(0);
            remitente.setDeleted(false);
            this.sesion.saveOrUpdate(remitente);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return remitente;
        }
    }
    Remitentes addRemitenteEdit(Remitentes remitente) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            //remitente.setId(0);
            remitente.setDeleted(false);
            this.sesion.saveOrUpdate(remitente);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return remitente;
        }
    }

    List<Oficios> llenaOficiosEntrada() {
        List <Oficios> catalogo=new ArrayList<Oficios>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from Oficios o order by o.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }
    List<Turnados> llenaOficiosTurnados() {
        List <Turnados> catalogo=new ArrayList<Turnados>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from Turnados t where t.deleted=0 order by t.oficios.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }
    List<Turnados> llenaOficiosTurnados(parametros param) {
        List <Turnados> catalogo=new ArrayList<Turnados>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="";
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            sentenciaSql="from Turnados t where 1=1 and t.deleted=0 " +
                    " and t.oficios.oficio like ? " +
                    " and t.nombre like ? " +
                    " and t.paterno like ? ";
            if(param.getFecha()!=null){
                Date uno=param.getFecha();
                Calendar cal = new GregorianCalendar();
                cal.setTimeInMillis(uno.getTime());
                cal.add(Calendar.DATE, +1);
                //param.setFecha(cal.getTime());
                sentenciaSql+=" and t.oficios.fechaRec = '"+ new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+ "'";
            }
            sentenciaSql+=" order by t.id desc";
            Query consulta=sesion.createQuery(sentenciaSql);
            consulta.setString(0, "%"+param.getOficio()+"%");
            consulta.setString(1, "%"+param.getNombre()+"%");
            consulta.setString(2, "%"+param.getPaterno()+"%");
            //consulta.setDate(3, param.getFecha());
            this.mostrarMensajeError("error al consultar", sentenciaSql );
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
           // this.VentanaAlert
            this.mostrarMensajeError("error al consultar", ex.toString()+sentenciaSql );
        }finally{//
            return catalogo;
        }
    }


    //************************************Investigación****************************



    int addInvestigacion(Investigacion unaInves, int visitadorInt, int lugarInt) {
        
        int response=0;
        this.crearSesion();
        ss=HibernateUtil.getSessionFactory().openSession();
        CatVisitadores unVisitador= new CatVisitadores();
        ss.load(unVisitador, new Integer(visitadorInt));
        unaInves.setCatVisitadores(unVisitador); 

        /*DateFormat df1;
        df1 = DateFormat.getDateInstance(DateFormat.MEDIUM);
        Date now = new Date();
        unaInves.setFechaCap(now);*/

        CatLugares unLugar= new CatLugares();
        ss.load(unLugar, new Integer(lugarInt));
        unaInves.setCatLugares(unLugar);  

        ss.clear();
        ss.close();
        unaInves.setId(0);
        unaInves.setDeleted(false);
        unaInves.setUsuarios(this.getUsuarioGlobal());

        try{
            
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(unaInves);
            transaccion.commit();
            response=unaInves.getId();
          
        }catch(HibernateException e){
          
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
            e.printStackTrace();
            response=-1;
            throw new RuntimeException(e);
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return response;
        }
    }

    int addInvEdit(Investigacion unaInves,int visitadorInt, int lugarInt ){
        int response=0;
        this.crearSesion();
        ss=HibernateUtil.getSessionFactory().openSession();
        CatVisitadores unVisitador= new CatVisitadores();
        ss.load(unVisitador, new Integer(visitadorInt));
        unaInves.setCatVisitadores(unVisitador);

        CatLugares unLugar= new CatLugares();
        ss.load(unLugar, new Integer(lugarInt));
        unaInves.setCatLugares(unLugar);
        ss.clear();
        ss.close();
        //unOficio.setId(0);
        unaInves.setDeleted(false);
        unaInves.setUsuarios(this.getUsuarioGlobal());

        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(unaInves);
            transaccion.commit();
            response=unaInves.getId();
        }catch(HibernateException e){
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
            e.printStackTrace();
            response=-1;
            throw new RuntimeException(e);
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return response;
        }
    }

List<InvQuejosos> llenarInvQuejosos() {
        List <InvQuejosos> catalogo=new ArrayList<InvQuejosos>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from InvQuejosos q where q.deleted=0 order by q.id desc");

            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }

List<InvInfractores> llenarInvInfractores() {
        List <InvInfractores> catalogo=new ArrayList<InvInfractores>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from InvInfractores i where i.deleted=0 order by i.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }

InvQuejosos addInvQuejosos(InvQuejosos quejoso) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            quejoso.setId(0);
            quejoso.setDeleted(false);
            this.sesion.saveOrUpdate(quejoso);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return quejoso;
        }
    }
    InvQuejosos addInvQuejososEdit(InvQuejosos quejoso) {
         this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            //turnado.setId(0);
            quejoso.setDeleted(false);
            this.sesion.saveOrUpdate(quejoso);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return quejoso;
        }
    }
InvInfractores addInvInfractores(InvInfractores infractor) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            infractor.setId(0);
            infractor.setDeleted(false);
            this.sesion.saveOrUpdate(infractor);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return infractor;
        }
    }
    InvInfractores addInvInfractoresEdit(InvInfractores infractor) {
         this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            //turnado.setId(0);
            infractor.setDeleted(false);
            this.sesion.saveOrUpdate(infractor);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return infractor;
        }
    }


List<Investigacion> llenaInvesEntrada() {
        List <Investigacion> catalogo=new ArrayList<Investigacion>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
           Query consulta=sesion.createQuery("SELECT NEW pojos.Investigacion (i) from Investigacion i order by i.id desc");
           catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }

List<Investigacion> llenarListaInvestigacion() {
       List <Investigacion> catalogo=new ArrayList<Investigacion>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from Investigacion i where i.deleted=0 order by i.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }

//List<InvQuejosos> llenaInvesQuejosos() {
//        List <InvQuejosos> catalogo=new ArrayList<InvQuejosos>();
//        this.crearSesion();
//        Transaction transaccion=null;
//        try{
//            catalogo.clear();
//            transaccion=sesion.beginTransaction();
//            Query consulta=sesion.createQuery("from InvQuejosos q where q.deleted=0 order by q.investigacion.id desc");
//            catalogo=consulta.list();
//            sesion.flush();
//        }catch(HibernateException ex){
//            transaccion.rollback();
//        }finally{//
//            return catalogo;
//        }
//    }
/*
 *
List<Investigacion>  llenaInves(parametros param) {
        List <Investigacion> catalogo=new ArrayList<Investigacion>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="";
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            sentenciaSql="from Investigacion i where 1=1 and i.deleted=0 " +
                    " and i.oficio like ? " +
                    " and i.InvQuejosos.nombre like ? " +
                    " and i.InvQuejosos.paterno like ? ";
          /*  if(param.getFecha()!=null){
                Date uno=param.getFecha();
                Calendar cal = new GregorianCalendar();
                cal.setTimeInMillis(uno.getTime());
                cal.add(Calendar.DATE, +1);
                //param.setFecha(cal.getTime());
                sentenciaSql+=" and t.oficios.fechaRec = '"+ new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+ "'";
            }*/
            /*sentenciaSql+=" order by i.id desc";
            Query consulta=sesion.createQuery(sentenciaSql);
            consulta.setString(0, "%"+param.getOficio()+"%");
            consulta.setString(1, "%"+param.getNombre()+"%");
            consulta.setString(2, "%"+param.getPaterno()+"%");
            //consulta.setDate(3, param.getFecha());
            this.mostrarMensajeError("error al consultar", sentenciaSql );
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
           // this.VentanaAlert
            this.mostrarMensajeError("error al consultar", ex.toString()+sentenciaSql );
        }finally{//
            return catalogo;
        }
    }*/

    //*****************catálago de visitadores
    List<CatVisitadores> getCatalogoDeVisitadores() {
        List <CatVisitadores> catalogo=new ArrayList<CatVisitadores>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="FROM CatVisitadores a where a.deleted=0 ORDER BY a.visitador";
        try{
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery(sentenciaSql);
            catalogo=consulta.list();
            transaccion.commit();
        }catch(Exception ex){
            transaccion.rollback();
        }finally{
            return catalogo;
        }
    }

 //****************************Catálogo de lugares
    List<CatLugares> getCatalogoDeLugares() {
        List <CatLugares> catalogo=new ArrayList<CatLugares>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="FROM CatLugares a where a.deleted=0 ORDER BY a.lugar";
        try{
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery(sentenciaSql);
            catalogo=consulta.list();
            transaccion.commit();
        }catch(Exception ex){
            transaccion.rollback();
        }finally{
            return catalogo;
        }
    }

    boolean deleteInvQuejososId(int id) {
        this.crearSesion();
        try{
            Transaction transaccion=null;
            InvQuejosos unt= new InvQuejosos();
            ss=HibernateUtil.getSessionFactory().openSession();
            ss.load(unt,id);
            unt.setDeleted(true);
            ss.clear();
            ss.close();
            transaccion=this.sesion.beginTransaction();
            this.sesion.merge(unt);
            transaccion.commit();
        }catch(Exception ex){
            return false;
        }finally{
            return true ;
        }
    }

    List<listaInvestigacion> llenarListaInvestigacionFiltro(String paramSeachr,  String donde) {
        List <listaInvestigacion> catalogo=new ArrayList<listaInvestigacion>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="";
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            if(donde.equalsIgnoreCase("i")){
                sentenciaSql="SELECT NEW listas.listaInvestigacion (i) FROM Investigacion i, InvInfractores inf" +
                    " where i.id=inf.investigacion.id and i.deleted=0 and inf.deleted=0 and " +
                    " ( CONCAT(inf.paterno,' ',inf.materno,' ',inf.nombre) like '%"+paramSeachr+"%' or  CONCAT(inf.nombre,' ', inf.paterno, ' ',inf.materno) like '%"+paramSeachr+"%')";

            }
            if(donde.equalsIgnoreCase("q")){
                sentenciaSql="SELECT NEW listas.listaInvestigacion (i) FROM Investigacion i, InvQuejosos q" +
                    " where i.id=q.investigacion.id and i.deleted=0 and q.deleted=0 and " +
                    " ( CONCAT(q.paterno,' ',q.materno,' ',q.nombre) like '%"+paramSeachr+"%' or  CONCAT(q.nombre,' ', q.paterno, ' ',q.materno) like '%"+paramSeachr+"%')";
            }
            if(donde.equalsIgnoreCase("o")){
                sentenciaSql="SELECT NEW listas.listaInvestigacion (i) FROM Investigacion i" +
                    " where i.deleted=0 and " +
                    "  i.oficio like '%"+paramSeachr+"%'";
            }

            sentenciaSql+=" order by i.id desc";


//            sentenciaSql="SELECT NEW listas.listaProcedimientos (p) FROM Procedimientos p, ProInfractores i, ProQuejosos o" +
//                    " where p.id=i.procedimientos.id and p.deleted=0 and i.deleted=0 and o.deleted=0 and " +
//                    " ( CONCAT(i.paterno,' ',i.materno,' ',i.nombre) like '%"+paramSeachr+"%' or  CONCAT(i.nombre,' ', i.paterno, ' ',i.materno) like '%"+paramSeachr+"%')"+
//                    " or ( CONCAT(o.paterno,' ',o.materno,' ',o.nombre) like '%"+paramSeachr+"%' or  CONCAT(o.nombre,' ', o.paterno, ' ',o.materno) like '%"+paramSeachr+"%')";

//            sentenciaSql="SELECT NEW listas.listaProcedimientos (p) " +
//                "FROM  Acusados ac, Asuntos asu  " +
//                "WHERE 1=1 " ;
//            sentenciaSql+=" and ac.asuntos.id=asu.id and ( CONCAT(ac.paterno,' ', ac.materno, ' ', ac.nombre) like '%"+param+"%' or  CONCAT(ac.nombre,' ', ac.paterno, ' ', ac.materno) like '%"+param+"%')" +
//                    " AND ac.deleted=0 and asu.deleted=0 " +
//                    " order by asu.id desc";
        //  sentenciaSql+=" order by i.id desc";
      //      sentenciaSql="from ProInfractores as i inner join i.procedimientos as pro where  CONCAT(i.paterno,' ',i.materno,' ',i.nombre) like '%"+paramSeachr+"%'  or CONCAT(i.nombre,' ',i.paterno,' ',i.materno) like '%"+paramSeachr+"%'";


            // from Cat as cat     inner join cat.mate as mate     left outer join cat.kittens as kitten

            Query consulta=sesion.createQuery(sentenciaSql);
            //consulta.setString(0, "%"+param.getNombre()+"%");
            //consulta.setString(1, "%"+param.getPaterno()+"%");
            //consulta.setString(2, "%"+param.getOficio()+"%");
            //consulta.setDate(3, param.getFecha());
            //this.mostrarMensajeAlert("error al consultar", sentenciaSql );
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
           // this.VentanaAlert
            this.mostrarMensajeAlert("error al consultar", ex.toString()+sentenciaSql );
        }finally{//
            return catalogo;
        }
    }


    ///////////////////**************** PROCEDIMIENTO ************************///////////////7

    int addProcedimiento(Procedimientos unPro, int visitadorInt, int lugarInt) {
        //variable de respuesta
        int response=0;
        this.crearSesion();
        ss=HibernateUtil.getSessionFactory().openSession();
        CatVisitadores unVisitador= new CatVisitadores();

        ss.load(unVisitador, new Integer(visitadorInt));
        unPro.setCatVisitadores(unVisitador);
        CatLugares unLugar= new CatLugares();
        ss.load(unLugar, new Integer(lugarInt));
        unPro.setCatLugares(unLugar);
        ss.clear();
        ss.close();
        unPro.setId(0);
        unPro.setDeleted(false);
        unPro.setUsuarios(this.getUsuarioGlobal());

        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(unPro);
            transaccion.commit();
            response=unPro.getId();
        }catch(HibernateException e){
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
            e.printStackTrace();
            response=-1;
            throw new RuntimeException(e);
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return response;
        }
    }
    int addProcedAdd(Procedimientos unPro,int visitadorInt, int lugarInt ){
        int response=0;
        this.crearSesion();
        ss=HibernateUtil.getSessionFactory().openSession();
        CatVisitadores unVisitador= new CatVisitadores();
        ss.load(unVisitador, new Integer(visitadorInt));
        unPro.setCatVisitadores(unVisitador);

        CatLugares unLugar= new CatLugares();
        ss.load(unLugar, new Integer(lugarInt));
        unPro.setCatLugares(unLugar);
        ss.clear();
        ss.close();
        unPro.setId(0);
        unPro.setDeleted(false);
        unPro.setUsuarios(this.getUsuarioGlobal());

        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(unPro);
            transaccion.commit();
            response=unPro.getId();
        }catch(HibernateException e){
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
            e.printStackTrace();
            response=-1;
            throw new RuntimeException(e);
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return response;
        }
    }
    int addProcedEdit(Procedimientos unPro,int visitadorInt, int lugarInt ){
        int response=0;
        this.crearSesion();
        ss=HibernateUtil.getSessionFactory().openSession();
        CatVisitadores unVisitador= new CatVisitadores();
        ss.load(unVisitador, new Integer(visitadorInt));
        unPro.setCatVisitadores(unVisitador);

        CatLugares unLugar= new CatLugares();
        ss.load(unLugar, new Integer(lugarInt));
        unPro.setCatLugares(unLugar);
        ss.clear();
        ss.close();
        //unOficio.setId(0);
        unPro.setDeleted(false);
        unPro.setUsuarios(this.getUsuarioGlobal());

        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(unPro);
            transaccion.commit();
            response=unPro.getId();
        }catch(HibernateException e){
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
            e.printStackTrace();
            response=-1;
            throw new RuntimeException(e);
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return response;
        }
    }
    ProQuejosos addProQuejososAdd(ProQuejosos proquejoso) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            proquejoso.setId(0);
            proquejoso.setDeleted(false);
            this.sesion.saveOrUpdate(proquejoso);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return proquejoso;
        }
    }
    ProInfractores addProInfractorAdd(ProInfractores proInfractor) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            proInfractor.setId(0);
            proInfractor.setDeleted(false);
            this.sesion.saveOrUpdate(proInfractor);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return proInfractor;
        }
    }
    ProQuejosos addProQuejososEdit(ProQuejosos proquejoso) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(proquejoso);
            proquejoso.setDeleted(false);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return proquejoso;
        }
    }
    ProInfractores addProInfractorEdit(ProInfractores proInfractor) {
        this.crearSesion();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            this.sesion.saveOrUpdate(proInfractor);
            proInfractor.setDeleted(false);
            transaccion.commit();
        }catch(HibernateException e){ //this.mostrarMensaje(e.toString());
            if(this.sesion.getTransaction() != null){
                this.sesion.getTransaction().rollback();
            }
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return proInfractor;
        }
    }
    List<ProInfractores> llenarProInfractores() {
        List <ProInfractores> catalogo=new ArrayList<ProInfractores>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from ProInfractores q where q.deleted=0 order by q.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }

    List<ProQuejosos> llenarProQuejosos() {
        List <ProQuejosos> catalogo=new ArrayList<ProQuejosos>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from ProQuejosos q where q.deleted=0 order by q.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }
    List<Procedimientos> llenarListaProcedimientos() {
       List <Procedimientos> catalogo=new ArrayList<Procedimientos>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("from Procedimientos p where p.deleted=0 order by p.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }
    List<Procedimientos> llenarListaProcedimientos(parametros param) {
//        List <Procedimientos> catalogo=new ArrayList<Procedimientos>();
//        this.crearSesion();
//        Transaction transaccion=null;
//        String sentenciaSql="";
//        try{
//            catalogo.clear();
//            transaccion=sesion.beginTransaction();
//            sentenciaSql="SELECT NEW listas.listaProcedimientos (p, i) FROM Procedimientos p, ProInfractores i WHERE p.deleted=0";
//
//           // sentenciaSql+=" order by i.id desc";
//            Query consulta=sesion.createQuery(sentenciaSql);
////            consulta.setString(0, "%"+param.getNombre()+"%");
////            consulta.setString(1, "%"+param.getPaterno()+"%");
////            consulta.setString(2, "%"+param.getOficio()+"%");
//            //consulta.setDate(3, param.getFecha());
//            this.mostrarMensajeError("error al consultar", sentenciaSql );
//            catalogo=consulta.list();
//            sesion.flush();
//        }catch(HibernateException ex){
//            transaccion.rollback();
//           // this.VentanaAlert
//            this.mostrarMensajeError("error al consultar", ex.toString()+sentenciaSql );
//        }finally{//
//            return catalogo;
//        }
        return null;
    }
    List<listaProcedimientos> llenarListaProcedimientosFiltro(String paramSeachr,  String donde) {
        List <listaProcedimientos> catalogo=new ArrayList<listaProcedimientos>();
        this.crearSesion();
        Transaction transaccion=null;
        String sentenciaSql="";
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            if(donde.equalsIgnoreCase("i")){
                sentenciaSql="SELECT NEW listas.listaProcedimientos (p) FROM Procedimientos p, ProInfractores i" +
                    " where p.id=i.procedimientos.id and p.deleted=0 and i.deleted=0 and " +
                    " ( CONCAT(i.paterno,' ',i.materno,' ',i.nombre) like '%"+paramSeachr+"%' or  CONCAT(i.nombre,' ', i.paterno, ' ',i.materno) like '%"+paramSeachr+"%')";
            }
            if(donde.equalsIgnoreCase("q")){
                sentenciaSql="SELECT NEW listas.listaProcedimientos (p) FROM Procedimientos p, ProQuejosos q" +
                    " where p.id=q.procedimientos.id and p.deleted=0 and q.deleted=0 and " +
                    " ( CONCAT(q.paterno,' ',q.materno,' ',q.nombre) like '%"+paramSeachr+"%' or  CONCAT(q.nombre,' ', q.paterno, ' ',q.materno) like '%"+paramSeachr+"%')";
            }
            if(donde.equalsIgnoreCase("o")){
                sentenciaSql="SELECT NEW listas.listaProcedimientos (p) FROM Procedimientos p" +
                    " where p.deleted=0 and " +
                    "  p.oficio like '%"+paramSeachr+"%'";
            }



//            sentenciaSql="SELECT NEW listas.listaProcedimientos (p) FROM Procedimientos p, ProInfractores i, ProQuejosos o" +
//                    " where p.id=i.procedimientos.id and p.deleted=0 and i.deleted=0 and o.deleted=0 and " +
//                    " ( CONCAT(i.paterno,' ',i.materno,' ',i.nombre) like '%"+paramSeachr+"%' or  CONCAT(i.nombre,' ', i.paterno, ' ',i.materno) like '%"+paramSeachr+"%')"+
//                    " or ( CONCAT(o.paterno,' ',o.materno,' ',o.nombre) like '%"+paramSeachr+"%' or  CONCAT(o.nombre,' ', o.paterno, ' ',o.materno) like '%"+paramSeachr+"%')";

//            sentenciaSql="SELECT NEW listas.listaProcedimientos (p) " +
//                "FROM  Acusados ac, Asuntos asu  " +
//                "WHERE 1=1 " ;
//            sentenciaSql+=" and ac.asuntos.id=asu.id and ( CONCAT(ac.paterno,' ', ac.materno, ' ', ac.nombre) like '%"+param+"%' or  CONCAT(ac.nombre,' ', ac.paterno, ' ', ac.materno) like '%"+param+"%')" +
//                    " AND ac.deleted=0 and asu.deleted=0 " +
//                    " order by asu.id desc";
        //  sentenciaSql+=" order by i.id desc";
      //      sentenciaSql="from ProInfractores as i inner join i.procedimientos as pro where  CONCAT(i.paterno,' ',i.materno,' ',i.nombre) like '%"+paramSeachr+"%'  or CONCAT(i.nombre,' ',i.paterno,' ',i.materno) like '%"+paramSeachr+"%'";


            // from Cat as cat     inner join cat.mate as mate     left outer join cat.kittens as kitten

            Query consulta=sesion.createQuery(sentenciaSql);
            //consulta.setString(0, "%"+param.getNombre()+"%");
            //consulta.setString(1, "%"+param.getPaterno()+"%");
            //consulta.setString(2, "%"+param.getOficio()+"%");
            //consulta.setDate(3, param.getFecha());
            //this.mostrarMensajeAlert("error al consultar", sentenciaSql );
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
           // this.VentanaAlert
            this.mostrarMensajeAlert("error al consultar", ex.toString()+sentenciaSql );
        }finally{//
            return catalogo;
        }
    }  
    boolean deleteInvInfractoresId(int id) {
        this.crearSesion();
        try{
            Transaction transaccion=null;
            InvInfractores unt= new InvInfractores();
            ss=HibernateUtil.getSessionFactory().openSession();
            ss.load(unt,id);
            unt.setDeleted(true);
            ss.clear();
            ss.close();

            transaccion=this.sesion.beginTransaction();
            this.sesion.merge(unt);
            transaccion.commit();
        }catch(Exception ex){
            return false;
        }finally{
            return true ;
        }
    }

    Integer buscarOficioenProcedimientos(int idOficio) {
        this.crearSesion();
        Transaction transaccion=null;
        Integer bandera = 0;
        try{
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("FROM Procedimientos where id_oficio=?");
            consulta.setInteger(0, idOficio);
            if(consulta.list().size()>0){
                Procedimientos pro= ((Procedimientos) consulta.uniqueResult());
                bandera = pro.getId();
            }
            sesion.flush();
            sesion.clear();
        }catch(HibernateException ex){
            transaccion.rollback();
            this.cerrarSesion();
        }finally{
            return bandera;
        }
    }
    Integer buscarInvestigacionEnProcedimientos(int idInvest) {
        this.crearSesion();
        Transaction transaccion=null;
        Integer bandera = 0;
        try{
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("FROM Procedimientos where id_investigacion=?");
            consulta.setInteger(0, idInvest);
            if(consulta.list().size()>0){
                Procedimientos pro= ((Procedimientos) consulta.uniqueResult());
                bandera = pro.getId();
            }
            sesion.flush();
            sesion.clear();
        }catch(HibernateException ex){
            transaccion.rollback();
            this.cerrarSesion();
        }finally{
            return bandera;
        }
    }

    Integer buscarOficioenInvestigacion(int idOficio) {
       
        this.crearSesion();
        Transaction transaccion=null;
        Integer bandera = 0;
        try{
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("FROM Investigacion where id_oficio=?");
            consulta.setInteger(0, idOficio);    
            if(consulta.list().size()>0){
                Investigacion  invest=  (Investigacion) consulta.uniqueResult();
                bandera = invest.getId();
            }
            
            sesion.flush();
            sesion.clear();
        }catch(HibernateException ex){
            transaccion.rollback();
            this.cerrarSesion();
        }finally{
            return bandera;
        }
    }

    int addResol(Resoluciones unaResolucion) {
        int r=0;
        this.crearSesion();
        this.sesion.clear();
        try{
            Transaction transaccion=this.sesion.beginTransaction();
            //unaMod.setId(0);
            unaResolucion.setDeleted(false);
            //Date fecha= new Date();
            //unaResolucion.setCreated(fecha);
            this.sesion.saveOrUpdate(unaResolucion);
            transaccion.commit();
            r=unaResolucion.getId();
        }catch(HibernateException e){
            r=-1;
        }finally {
            this.sesion.clear();
            this.sesion.close();
            return r;
        }
    }
    List<Resoluciones> listaResol(Procedimientos proce) {
        List <Resoluciones> catalogo=new ArrayList<Resoluciones>();
        this.crearSesion();
        Transaction transaccion=null;
        try{
            catalogo.clear();
            transaccion=sesion.beginTransaction();
            Query consulta=sesion.createQuery("FROM Resoluciones r WHERE r.deleted=false and r.procedimientos.id="+ proce.getId() + " order by r.id desc");
            catalogo=consulta.list();
            sesion.flush();
        }catch(HibernateException ex){
            transaccion.rollback();
        }finally{//
            return catalogo;
        }
    }

}


